#include "volumetool.h"
#include "ui_volumetool.h"
#include<QIcon>

VolumeTool::VolumeTool(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::VolumeTool)
    ,_isMuted(false)
    ,_volumeRatio(20)
{
    ui->setupUi(this);

    // 在windows上，设置透明效果后，窗⼝需要加上Qt::FramelessWindowHint格式
    // 否则没有控件位置的背景是⿊⾊的
    // 由于默认窗⼝有阴影，因此还需要将窗⼝的原有的阴影去掉，窗⼝需要加上Qt::NoDropShadowWindowHint
    this->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint);

    // // //设置窗口背景透明
    // this->setAttribute(Qt::WA_TranslucentBackground);

    // //设置窗口阴影部分
    // QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(this);
    // shadowEffect->setOffset(0,0);//设置阴影偏移量
    // shadowEffect->setColor(Qt::black);//设置阴影颜色
    // shadowEffect->setBlurRadius(10);//设置阴影半径

    // this->setGraphicsEffect(shadowEffect);

    //设置图片
    ui->silenceBtn->setIcon(QIcon(":/images/volume.png"));
    // ⾳量的默认⼤⼩是20
    ui->outSlider->setGeometry(ui->outSlider->x(), 180 - 36 + 25, ui->outSlider->width(), 36);
    ui->sliderBtn->move(ui->sliderBtn->x(), ui->outSlider->y() - ui->sliderBtn->height()/2);
    ui->volumeRatio->setText("20%");

    connect(ui->silenceBtn, &QPushButton::clicked, this, &VolumeTool::onSilenceBtnClicked);

    ui->volumeBox->installEventFilter(this);

}

VolumeTool::~VolumeTool()
{
    delete ui;
}

// void VolumeTool::paintEvent(QPaintEvent *event)
// {
//     (void)event;
//     // 1. 创建绘图对象
//     QPainter painter(this);
//     // 2. 设置抗锯⻮
//     painter.setRenderHint(QPainter::Antialiasing, true);
//     // 3. 设置画笔
//     // 没有画笔时：画出来的图形就没有边框和轮廓线
//     painter.setPen(Qt::NoPen);
//     // 4. 设置画刷颜⾊
//     painter.setBrush(QBrush(Qt::white));
//     // 创建⼀个三⻆形
//     QPolygon polygon;
//     polygon.append(QPoint(30, 320));
//     polygon.append(QPoint(70, 320));
//     polygon.append(QPoint(50, 340));
//     // 绘制三⻆形
//     painter.drawPolygon(polygon);
// }

//重写函数，过滤鼠标按下、移动、释放的事件
bool VolumeTool::eventFilter(QObject *object, QEvent *event)
{
    if(object == ui->volumeBox){
        if(event->type() == QEvent::MouseButtonPress){
            setVolume();
        }
        else if(event->type() == QEvent::MouseMove){
            emit setMusicVolume(_volumeRatio);
        }
        else if(event->type() == QEvent::MouseButtonRelease){
            setVolume();
            emit setMusicVolume(_volumeRatio);
        }
        return true;
    }

    return QWidget::eventFilter(object, event);
}

//计算音量大小
void VolumeTool::setVolume()
{
    int height = ui->volumeBox->mapFromGlobal(QCursor().pos()).y();
    height = height < 25 ? 25 : height;
    height = height > 205 ? 205 : height;

    //计算圆圈的位置
    ui->sliderBtn->move(ui->sliderBtn->x(), height - ui->sliderBtn->height() / 2);

    //计算outslider位置
    ui->outSlider->setGeometry(ui->outSlider->x(), height, ui->outSlider->width(), 205 - height);

    //计算音量比率
    _volumeRatio = (int)(ui->outSlider->height() / (float)180 * 100);

    //设置给volumeRatio显示
    ui->volumeRatio->setText(QString::number(_volumeRatio) + "%");

}

void VolumeTool::onSilenceBtnClicked()
{
    _isMuted = !_isMuted;
    if(_isMuted){
        ui->silenceBtn->setIcon(QIcon(":/images/volume2.png"));
    }else{
        ui->silenceBtn->setIcon(QIcon(":/images/volume.png"));
    }
    //发送信号
    emit setSilence(_isMuted);
}
